"use strict";
var DataHelper = /** @class */ (function () {
    // 内部的
    // let dh = new DataHelper(`plData`, `id`);
    // 一、构造函数 --作用,为对象 添加 各种属性 ----------------------
    function DataHelper(dataKey, primaryKey) {
        // 外部的
        this.dataKey = dataKey;
        this.primaryKey = primaryKey;
    }
    // 1.读取全部数据,返回数组(如果没有读到数据 就返回 空数组)-------------
    DataHelper.prototype.readData = function () {
        // 1.读取 本地数据(根据dataKey读取)
        var strData = localStorage.getItem(this.dataKey);
        // 2.将 读取的 json数组字符串 转成数组对象
        var arrData = strData ? JSON.parse(strData) : [];
        // 3.返回数组对象
        return arrData;
    };
    // 2.存入本地数据 ----------------------
    DataHelper.prototype.saveData = function (arrData) {
        // 1.将数组转成 json字符串
        var str = JSON.stringify(arrData);
        // 2.将字符串 保存到 本地localStorage 中
        localStorage.setItem(this.dataKey, str);
    };
    // 3.新增数据 --------------------
    DataHelper.prototype.addData = function (conStr) {
        // 1.读取本地现有数据
        var arr = this.readData();
        // 2.创建一个评论对象,并设置 评论内容属性
        var obj = {
            content: conStr,
        };
        // obj.id = 1
        // obj['id'] = 1
        // obj[this.primaryKey] = 1
        // 3.1 自动生成主键值(id 值)
        var newId = arr.length > 0 ? arr[arr.length - 1][this.primaryKey] + 1 : 1;
        // 3.2 将id值通过 中括号访问法 添加到 对象
        obj[this.primaryKey] = newId;
        // 4.将添加了 主键值 的 对象 追加到数组
        arr.push(obj);
        // 5.将数组 保存到localStrorage 中
        this.saveData(arr);
        // 6.返回 id
        return newId;
    };
    // 4.删除数据 --------------------
    DataHelper.prototype.removeDataById = function (id) {
        var _this = this;
        // 读取本地数组
        var arr = this.readData();
        // 查找要删除 评论对象的 下标，并保存 到本地
        var index = arr.findIndex(function (ele) {
            return ele[_this.primaryKey] == id;
        });
        if (index > -1) {
            arr.splice(index, 1);
            // 保存到本地
            this.saveData(arr);
            return true;
        }
        // 如果下标 大于-1， 则删除数组中该下标元素对象，并返回true
        return false; // 否则 返回 false
    };
    return DataHelper;
}());
